1457

7 分钟

#Lua 的 for ... in 循环语句

Lua 中的 for ... in 循环(泛型 for 循环)用于遍历迭代器函数返回的值序列。这是遍历表、数组和其他可迭代对象的常用方式。

for 变量列表 in 迭代器函数, 状态值, 控制值 do -- 循环体 end
  • 每轮循环调用 迭代器函数,参数是 状态值控制值,其返回值会赋值给 变量列表
  • 状态值 始终不变,用于提供额外的信息
  • 控制值 记录上次迭代的位置,会被 迭代器函数 的返回第一个返回值更新
  • 迭代器函数 的返回第一个返回值为 nil 时结束循环

开始

迭代器函数(状态值, 控制值)

变量列表 = 迭代器返回值

控制值 = 第一个返回值

控制值 == nil?

结束

循环体

示例:

-- 迭代器函数 function iterator(state, control) control = control + 1 if control < state then return control, control * control -- 返回索引和值 end end -- 循环 for i, v in iterator, 10, 5 do print("索引:", i, "值:", v) end
  • 状态值为 10
  • 初始控制值为 5

运行结果:

索引: 6 值: 36 索引: 7 值: 49 索引: 8 值: 64 索引: 9 值: 81

#遍历表

Lua 标准库中提供 ipairspairs 函数用于遍历表,前者用于数组,后者用于一般的表。

示例:

-- 定义数组 local array = {10, 20, 30, 40, 50} -- 遍历数组 for i,v in ipairs(array) do print(i, v) end -- 定义表 local dict = { name = "Alice", age = 25, city = "Beijing" } -- 遍历 for k,v in pairs(dict) do print(k, v) end

运行结果:

1 10 2 20 3 30 4 40 5 50 name Alice city Beijing age 25

创建于 2025/10/2

更新于 2025/10/2